'''定义阶乘n! = 1 ×2 ×3×···×n。
请问100! (100的阶乘)有多少个正约数。'''
import os
import sys
n = 100
p = [2]     # 质数集,其中2
for i in range(3, n + 1):   # 先求出100以内的质数
    j = 2
    while j < i:
        if i % j == 0:      # 如果有比 i 小的数可以将i整除，就表示i为合数，break结束循环，就不会把i加入质数集中.
            break
        j += 1
    else:
        p.append(i)
m = {}
for i in p:
    m[i] = 1  # 每个质数初始为1，对应公式：”(某一质数的次数 + 1) * (某二质数的次数 + 1)“   中的1。
for i in range(2, n + 1):                         # 遍历 [2, 100]    对应100的阶乘为1x2x3...x100。
    for j in p:              # 遍历质数，将每个参与100阶乘中相乘的数都质因数分解一下。# （比如 6 分解成 2*3 ，12 分解成 2*2*3）
        if j > i:            # 当所遍历到的质数比要进行质因数分解的数要大时，就直接结束这一层for j in p循环。
            break
        while i % j == 0:    # 这里是看 i 可以被 "当前 j" 整除多少次，当 i 不能再被 "当前 j" 整除时,while循环结束,for j in p循环继续尝试下一个j，直到j > i，满足if条件，break
            i //= j
            m[j] += 1        # 让对应的质数个数 + 1
s = 1   # 定义一个变量s,用于接收相乘得出的约数个数。（因为是相乘，所以s要等于1）
for i in m.values():        # 所有质因子的个数相乘，就是约数个数了。
    s *= i
print(s)